LB 集群之 LVS 介绍

        LB 集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有 nginx 、lvs 、keepalived ,商业的硬件负载设备 F5 、Netscale 。

        LB 集群的架构如下图,原理也很简单,就是当用户的请求过来时,会直接发到分发器(Director Server)上,然后它把用户的请求根据预先设置好的算法,智能均衡地分发到后端的真正服务器(real server)上。如果不同的机器,可能用户请求到的数据不一样,为了避免这样的情况发生,所以用到了共享存储,这样保证所有用户请求的数据是一样的。

        LVS 是一个实现负载均衡集群的开源软件项目,LVS 架构从罗技上可分为调度层(Director)、server 集群层(real server)和共享存储。 LVS 从实现上分为下面三种模式。

  1. NAT (调度器将请求的目标 ip 即 vip 地址改为 real server 的 ip ,返回的数据包也经过调度器,调度器再把源地址修改为 vip)。

  1. TUN (调度器将请求来的数据包封装加密通过 ip 隧道转发到后端的 real server 上,而 real server 会直接把数据返回给客户端,而不再经过调度器)。

  2. DR (调度器将请求来的数据包的目标 mac 地址改为 real server 的 mac 地址,返回的时候也不经过调度器,直接返回给客户端)。参考资料LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)

        图中出现的几个 IP 概念,需要解释一下,其中 DIP(driector ip)为分发器的 IP, NAT 模式下它必须为公网 IP ,要对外服务。VIP (virtual ip)为虚拟 IP ,用在 TUN 和 DR 模式中,需要同时配置在分发器和后端真实服务器上。RIP (Resl IP)为后端真实服务器的 IP ,在 TUN 和 DR 模式中,RIP 为公网 IP。

        要想把用户的请求调度给后端的 RS ,是需要经过调度算法来实现的,那么关于 LVS 的调度算法,都有哪些?

  • 轮叫调度(Round Robin)(简称 rr),这种算法是最简单的,不管后端 RS 配置和处理能力,非常均衡地分发下去。
  • 加权调度(Weighted Round Robin)(简称 wrr),比上面的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求越多,权重取值范围 0-100
  • 最少连接(least connection)(LC),这个算法会根据后端 RS 的连接数来决定把请求分给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 - 加权最少链接(Weighted Least Connections)(WLC),比第三个算法多了一个权重的概念。

        其他算法参考LVS调度算法